home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / tos_updt / fmcity / palcom / auto / script / autolib.mx < prev    next >
Text File  |  1995-04-19  |  36KB  |  1,236 lines

  1. //--------------------------------------------------------------------------//
  2. //                        PALCOM V2.1 L10                        //
  3. //                 自動通信:自動通信ライブラリスクリプト(常駐)                //
  4. //                                                                            //
  5. //                                        CopyRight(C) 1994/10/20                //
  6. //                                FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED    //
  7. //                                        written by C-cube Soft T.Nakamura    //
  8. //--------------------------------------------------------------------------//
  9. !!MAINBLOCK
  10. event    @OPEN.EXTERN {
  11.     //---   グローバル変数定義   ---//
  12.     sys.global( $AutoSetName       );            // 選択中の設定名
  13.     sys.global( $AutoSetFileName   );            // 選択中の設定ファイル名
  14.     sys.global( $TrdId             );            // TRD の ハンドル
  15.     sys.global( $TrdUpdateFlg      );            // TRD 更新フラグ
  16.     sys.global( $SetDataList       );            // 選択中の設定データ
  17.     sys.global( $ForumDataList1    );            // 編集中のフォーラムデータ
  18.     sys.global( $ForumDataList1Sub );            //     同上
  19.     sys.global( $ForumDataList2    );            //     同上
  20.     sys.global( $LogFileId         );            // ログファイルID
  21.     sys.global( $LogFileName       );            // ログファイル名
  22.     sys.global( $IdxFileId         );            // インデックスファイル名
  23.     sys.global( $IdxUpList         );            // 送信マーカリスト
  24.     sys.global( $IdxNum            );            // インデックス総数
  25.     sys.global( $ErrorFlg          );            // エラー発生フラグ
  26.     sys.global( $ComFlg            );            // 通信実行フラグ
  27.     sys.global( $HaltFlg           );            // 中断フラグ
  28.     sys.global( $HaltFlgSub        );            // 中断フラグ(補助用)
  29.     sys.global( $AUTO.WAIT15       );           // 15 秒 wait キャラクタ
  30.     sys.global( $AUTO.WAIT30       );           // 30 秒 wait キャラクタ
  31.     sys.global( $AUTO.WAIT60       );           // 60 秒 wait キャラクタ
  32.     sys.global( $AutoDefaultData   );           // デフォルト情報リスト
  33.     sys.global( $AutoForumMax      );            // フォーラム最大登録件数
  34.     $TrdId           = #FALSE;
  35.     $TrdUpdateFlg    = #FALSE;
  36.     $ErrorFlg        = #FALSE;
  37.     $ComFlg          = #FALSE;
  38.     $HaltFlg         = 0;
  39.     $HaltFlgSub      = 0;
  40.     $AUTO.WAIT60     = "";
  41.     $AUTO.WAIT30     = "";
  42.     $AUTO.WAIT15     = "";
  43.     $AutoDefaultData = ["", 0];
  44.     $AutoForumMax    = 0;
  45. }
  46. event    @CLOSE.EXTERN {
  47.     if( $TrdId != #FALSE ) {
  48.         AUTO.closeDBfile();
  49.     }
  50.  
  51.     //---   グローバル変数解除   ---//
  52.     sys.local( $AutoSetName       );
  53.     sys.local( $AutoSetFileName   );
  54.     sys.local( $TrdId             );
  55.     sys.local( $TrdUpdateFlg      );
  56.     sys.local( $SetDataList       );
  57.     sys.local( $ForumDataList1    );
  58.     sys.local( $ForumDataList1Sub );
  59.     sys.local( $ForumDataList2    );
  60.     sys.local( $LogFileId         );
  61.     sys.local( $LogFileName       );
  62.     sys.local( $IdxFileId         );
  63.     sys.local( $IdxUpList         );
  64.     sys.local( $IdxNum            );
  65.     sys.local( $ErrorFlg          );
  66.     sys.local( $ComFlg            );
  67.     sys.local( $HaltFlg           );
  68.     sys.local( $HaltFlgSub        );
  69.     sys.local( $AUTO.WAIT15       );
  70.     sys.local( $AUTO.WAIT30       );
  71.     sys.local( $AUTO.WAIT60       );
  72.     sys.local( $AutoDefaultData   );
  73.     sys.local( $AutoForumMax      );
  74. }
  75.  
  76.  
  77.  
  78. //----------------------------//
  79. //---   保存データの開放   ---//
  80. //----------------------------//
  81. function    AUTO.freeData() {
  82.     sys.free( $SetDataList       );
  83.     sys.free( $ForumDataList1    );
  84.     sys.free( $ForumDataList1Sub );
  85.     sys.free( $ForumDataList2    );
  86.     sys.free( $IdxUpList         );
  87.     sys.free( $AUTO.WAIT15       );
  88.     sys.free( $AUTO.WAIT30       );
  89.     sys.free( $AUTO.WAIT60       );
  90. }
  91.  
  92.  
  93.  
  94. //--------------------------------------------//
  95. //---   文字列の送信(システム変数使用)   ---//
  96. //--------------------------------------------//
  97. function    AUTO.putStr( $str ) {
  98.     //---   中断のチェック   ---//
  99.     if( com.isCD( $$COM.PORT ) == #FALSE ) {
  100.         AUTO.disconnect( #TRUE );
  101.     }
  102.     if( $HaltFlgSub != 0 ) {
  103.         AUTO.halt();
  104.     }
  105.     com.putString( $str, [] );
  106. }
  107.  
  108. //----------------------------------------------------//
  109. //---   文字列の送信(エコーバックチェック付き)   ---//
  110. //----------------------------------------------------//
  111. function    AUTO.putStr2( $str ) {
  112.     //---   中断のチェック   ---//
  113.     if( com.isCD( $$COM.PORT ) == #FALSE ) {
  114.         AUTO.disconnect( #TRUE );
  115.     }
  116.     if( $HaltFlgSub != 0 ) {
  117.         AUTO.halt();
  118.     }
  119.  
  120.     //---   文字列の終端が '\r' の場合だけエコーバックのチェックを行う   ---//
  121.     if( str.right( $str, 1, ) != "\r" ) {
  122.         com.putString( $str, [] );
  123.         $st = 0;
  124.     } else {
  125.         loop {
  126.             $flg = sys.intRec?();
  127.             sys.stopIntRec();
  128.             com.putString( $str, [] );
  129.             $ecStr = str.replaceAll( $str, "\r", "\n" );
  130.             $ecStr = str.replaceAll( $str, "%", "%%" );
  131.             comtable( $a, 600 ) {
  132.                 $ecStr            { $st = 0; exit;            }
  133.                 ">\w\w"            { $st = 1; exit;            }
  134.                 ">\w\w"        { $st = 1; exit;            }
  135.                 ":\w\w"        { $st = 1; exit;            }
  136.                 ":\w\w"            { $st = 1; exit;            }
  137.                 timeout            { $st = 2; exit;            }
  138.                 interval        { AUTO.haltCheck();            }
  139.                 $AUTO.WAIT30    { com.putString("\r", [] );    }
  140.             }
  141.             if( $st == 1 ) {
  142.                 continue;
  143.             }
  144.             if( $flg == #TRUE ) {
  145.                 sys.startIntRec();
  146.             }
  147.             exit;
  148.         }
  149.     }
  150.     if( $st == 2 ) {
  151.         return( #FALSE );
  152.     }
  153.     return( #TRUE );
  154. }
  155.  
  156. //----------------------------------//
  157. //---   中断フラグの設定&獲得   ---//
  158. //----------------------------------//
  159. function    AUTO.setHaltFlg( $flg ) {
  160.     if( $flg == 0 ) {
  161.         $HaltFlgSub = 0;
  162.     }
  163.     $HaltFlg = $flg;
  164.     return;
  165. }
  166. function    AUTO.getHaltFlg() {
  167.     return( $HaltFlg );
  168. }
  169. function    AUTO.getHaltFlgSub() {
  170.     return( $HaltFlgSub );
  171. }
  172.  
  173. //--------------------------------//
  174. //---   中断のチェック&実行   ---//
  175. //--------------------------------//
  176. function    AUTO.haltCheck() {
  177.     if( com.isCD( $$COM.PORT ) == #FALSE ) {
  178.         AUTO.disconnect( #TRUE );
  179.     }
  180.     if( $HaltFlgSub != 0 ) {
  181.         AUTO.halt();
  182.     }
  183.     return;
  184. }
  185.  
  186. //----------------------------------------//
  187. //---   中断準備処理イベントハンドラ   ---//
  188. //----------------------------------------//
  189. event    @AUTO.HALT {
  190.     dialog.openProg(["━━━━━  自動通信の中断  ━━━━━",
  191.                      "",
  192.                      "      少 々 お 待 ち く だ さ い      ",
  193.                      ""], "", #FALSE );
  194.     $HaltFlgSub = 1;
  195.     return;
  196. }
  197.  
  198. //--------------------//
  199. //---   中断処理   ---//
  200. //--------------------//
  201. function    AUTO.halt() {
  202.     dialog.close();
  203.     sys.pushCursor( 80 );
  204.     $ret = dialog.ask(["━━━━━━━  自動通信の中断  ━━━━━━━",
  205.                        "",
  206.                        "         自 動 通 信 を 中 断 し ま す。      ",
  207.                        ""],["取消","回線を切断する","通信を続ける"] );
  208.     sys.popCursor();
  209.     if( $ret == 0 ) {                            // 取消(自動通信続行)
  210.         sys.pushCursor( 80 );
  211.         dialog.openProg([[],"    自  動  通  信  実  行  中     ",[]],
  212.                                                             " 中断 ", #FALSE );
  213.         $HaltFlgSub = 0;
  214.         sys.enableInt("AUTO.interruptFunc");
  215.         return;
  216.     } elif( $ret == 1 ) {                        // 回線切断
  217.         $HaltFlg = 1;
  218.     } else {                                    // 通信続行
  219.         $HaltFlg = 2;
  220.     }
  221.     sys.deleteInt("AUTO.interruptFunc");
  222.     sys.pushCursor( 81 );
  223.     dialog.openProg(["━━━━  自動通信の中断  ━━━━",
  224.                      "",
  225.                      "        中  断  処  理  中        ", ""], "", #FALSE );
  226.     com.sendBreak( 0 );
  227.     $HaltFlgSub = 0;
  228.     halt;
  229. }
  230.  
  231. //--------------------------------------//
  232. //---   回線が切断された場合の処理   ---//
  233. //--------------------------------------//
  234. function    AUTO.disconnect(
  235.     $haltFlg )                                    // 強制終了フラグ(#TRUE:する)
  236. {
  237.     sys.deleteInt("AUTO.interruptFunc");
  238.     if( dialog.check() == #TRUE ) {
  239.         dialog.close();
  240.     }
  241.     $saveXsize = dialog.getDefaultXSize();
  242.     dialog.setDefaultXSize( 266 );
  243.     $ret = dialog.ask(["━━━━━━━  自動通信  ━━━━━━━",
  244.                        "",
  245.                        "      通信中に回線が切断されました。    ",
  246.                        ""],["確認"] );
  247.     dialog.setDefaultXSize( $saveXsize );
  248.     $HaltFlg = 1;
  249.     if( $haltFlg == #TRUE ) {
  250.         halt;
  251.     }
  252. }
  253.  
  254. //--------------------------------//
  255. //---   通信実行フラグの設定   ---//
  256. //--------------------------------//
  257. function    AUTO.setComFlg( $ComFlg ) {
  258.     return;
  259. }
  260.  
  261. //------------------------------------//
  262. //---   エラーフラグの設定/取得   ---//
  263. //------------------------------------//
  264. function    AUTO.setErrorFlg( $ErrorFlg ) {
  265.     return;
  266. }
  267. function    AUTO.getErrorFlg() {
  268.     return( $ErrorFlg );
  269. }
  270.  
  271. //----------------------------------------//
  272. //---   データベースファイル名の取得   ---//
  273. //----------------------------------------//
  274. function    AUTO.getDBfileName()
  275. {
  276.     if( str.right( $$DIR.LOG, 1 ) != "\\" ) {
  277.         $file  = str.join([$$DIR.LOG, "\\HOSTNIF.TRD"], "" );
  278.     } else {
  279.         $file  = str.join([$$DIR.LOG, "HOSTNIF.TRD"], "" );
  280.     }
  281.     return( $file );
  282. }
  283.  
  284. //----------------------------------------------------//
  285. //---   データベ-スファイルのオ-プン/クローズ   ---//
  286. //----------------------------------------------------//
  287. function    AUTO.openDBfile()
  288. {
  289.     $file = AUTO.getDBfileName();
  290.     if( file.exist( $file ) == #TRUE ) {
  291.         $line = file.getLineNum( $file );
  292.         $TrdId = trd.init(( $line + 10 ) * 20, -1 );
  293.         trd.load( $TrdId, $file );
  294.         $cnt = trd.count( $TrdId, [1, 2, -5, -2] ) + 50;
  295.         trd.end( $TrdId );            // 現在のフォーラム数 + 50件
  296.         $buffSize = ( $cnt * 50 * 20 ) + ( 776 * 20 );
  297.         $AutoForumMax = $cnt;
  298.     } else {
  299.         $buffSize = 65520;            // フォーラム50件分 (50 * 50 * 20) + (776 * 20)
  300.         $AutoForumMax = 50;
  301.     }
  302.     $TrdId = trd.init( $buffSize, -1 );
  303.     if( file.exist( $file ) == #TRUE ) {
  304.         trd.load( $TrdId, $file );
  305.         return;
  306.     }
  307.  
  308.     //---   データベースファイルが無い場合、新規に作成する   ---//
  309.     $tag = [1,-2];
  310.     trd.setData( $TrdId, $tag, "NIF\tNIFTY-Serve" );
  311.  
  312.     $tag = [1,1];
  313.     trd.setData( $TrdId, $tag, "設定なし");
  314.     $tag = [1,2];
  315.     trd.setData( $TrdId, $tag, "設定なし");
  316.     $tag = [1,3];
  317.     trd.setData( $TrdId, $tag, "");
  318.  
  319.     $tag = [1,1,-2];
  320.     trd.setData( $TrdId, $tag, "MAIL\t電子メール" );
  321.     $tag = [1,1,1];
  322.     trd.setData( $TrdId, $tag, "1\t受信" );
  323.     $tag = [1,1,2];
  324.     trd.setData( $TrdId, $tag, "2\t送信" );
  325.     $tag = [1,1,3];
  326.     trd.setData( $TrdId, $tag, "3\tアップロード" );
  327.     $tag = [1,1,4];
  328.     trd.setData( $TrdId, $tag, "4\tダウンロード" );
  329.  
  330.     $tag = [1,2,-2];
  331.     trd.setData( $TrdId, $tag, "FORUM\tフォーラム" );
  332.  
  333.     $tag = [1,3,-2];
  334.     trd.setData( $TrdId, $tag, "HP\tホームパーティ" );
  335.  
  336.     trd.save( $TrdId, $file );
  337.     return;
  338. }
  339. function    AUTO.closeDBfile() {
  340.     if( $TrdUpdateFlg == #TRUE ) {
  341.         dialog.openProg([[],"   NIFTY-Serve 情報を更新中です。  ",[]],
  342.                                                                 "", #FALSE );
  343.         $file = AUTO.getDBfileName();
  344.         trd.save( $TrdId, $file );
  345.         dialog.close();
  346.     }
  347.     trd.end( $TrdId );
  348.     $TrdId = #FALSE;
  349.     $TrdUpdateFlg = #FALSE;
  350. }
  351. function    AUTO.getTrdId() {
  352.     return( $TrdId );
  353. }
  354. function    AUTO.setTrdUpdateFlg() {
  355.     $TrdUpdateFlg = #TRUE;
  356.     return;
  357. }
  358.  
  359. //--------------------------------------------------------//
  360. //---   選択された設定名/設定ファイル名の設定/獲得   ---//
  361. //--------------------------------------------------------//
  362. function    AUTO.setSetName( $AutoSetName, $AutoSetFileName ) {
  363.     return;
  364. }
  365. function    AUTO.getSetName() {
  366.     return( [$AutoSetName, $AutoSetFileName] );
  367. }
  368.  
  369. //--------------------------------//
  370. //---   設定情報の獲得/設定   ---//
  371. //--------------------------------//
  372. function    AUTO.getSetData() {
  373.     return( $SetDataList );
  374. }
  375. function    AUTO.setSetData( $SetDataList ) {
  376.     return;
  377. }
  378.  
  379. //----------------------------------//
  380. //---   ルート情報の獲得/設定   ---//
  381. //----------------------------------//
  382. function    AUTO.getAutoData() {
  383.     return( data.copy( list.get1st( $SetDataList )));
  384. }
  385. function    AUTO.setAutoData( $list ) {
  386.     $cpList = data.copy( $list );
  387.     list.del1st( $SetDataList );
  388.     list.put1st( $SetDataList, $cpList );
  389. }
  390.  
  391. //----------------------------------//
  392. //---   掲示板情報の獲得/設定   ---//
  393. //----------------------------------//
  394. function    AUTO.getBbsData() {
  395.     return( data.copy( list.getNth( $SetDataList, 5 )));
  396. }
  397. function    AUTO.setBbsData( $list ) {
  398.     $cpList = data.copy( $list );
  399.     list.delNth( $SetDataList, 5 );
  400.     list.putNth( $SetDataList, 4, $cpList );
  401. }
  402.  
  403. //--------------------------------------//
  404. //---   フォーラム情報の編集&設定   ---//
  405. //--------------------------------------//
  406. function    AUTO.setForumData(
  407.     $list,                                        // フォーラムデータリスト
  408.     $chkNum )                                    // フォーラムチェックデータ
  409. {
  410.     $listSub = data.copy( $list );
  411.     $forumId = list.getNth( list.getNth( $listSub, 3 ), 3 );
  412.     if( list.getNth( $listSub, 4 ) == #TRUE ) {
  413.         //---   既に設定データがある場合   ---//
  414.         $i = 1;
  415.         foreach( $a, list.getNth( $SetDataList, 2 )) {
  416.             $id = list.getNth( list.get1st( $a ), 3 );
  417.             if( $id == $forumId ) {
  418.                 $ForumDataList1 = list.putLast( $listSub, $i );
  419.                 $ForumDataList2 = data.copy( list.getNth( $a, 2 ));
  420.                 list.del1st( list.get1st( list.get1st( $ForumDataList2 )));
  421.                 list.put1st( list.get1st( list.get1st( $ForumDataList2 )),
  422.                                                     list.getNth( $list, 5 ));
  423.                 exit;
  424.             }
  425.             $i = $i + 1;
  426.         }
  427.     } else {
  428.         //---   新規の設定データの場合   ---//
  429.         $ForumDataList1 = $listSub;
  430.         $ForumDataList2 = [[[list.getNth( $list, 5 )],[#FALSE,""],
  431.                             [#FALSE,#FALSE,#FALSE],[#FALSE],[#FALSE,#FALSE]],
  432.                            [[#FALSE,0],[],[]],
  433.                            [[1,9],[],[]],
  434.                            $chkNum,
  435.                           ];
  436.     }
  437.     return;
  438. }
  439. function    AUTO.setLoopStatus( $statusList, $tagList ) {
  440.     foreach( $a, list.getNth( $SetDataList, 2 )) {
  441.         $forumId = list.getNth( list.get1st( $a ), 3 );
  442.         $srhFlg  = 0;
  443.         $i       = 1;
  444.         foreach( $b, $tagList ) {
  445.             if( $forumId == list.getLast( $b )) {
  446.                 $srhFlg = 1;
  447.                 exit;
  448.             }
  449.             $i = $i + 1;
  450.         }
  451.         if( $srhFlg == 0 ) {
  452.             continue;
  453.         }
  454.         $list = list.get1st( list.get1st( list.getNth( $a, 2 )));
  455.         if( list.get1st( $list ) != list.getNth( $statusList, $i )) {
  456.             list.del1st( $list );
  457.             list.putLast( $list, list.getNth( $statusList, $i ));
  458.         }
  459.     }
  460. }
  461. function    AUTO.updateForumData( $dataList, $no ) {
  462.     $forumName = list.getNth( $ForumDataList1Sub, 1 );
  463.     $cmdName   = list.getNth( $ForumDataList1Sub, 2 );
  464.  
  465.     //---   フォーラム名またはコマンド名が変更されている場合   ---//
  466.     //---                         TRDのデータを書き換える   ---//
  467.     if(( $forumName != list.getNth( $ForumDataList1, 1 ))||
  468.        ( $cmdName   != list.getNth( $ForumDataList1, 2 ))) {
  469.         if( $no == -1 ) {
  470.             //---   新規の場合   ---//
  471.             $ret     = trd.getData( $TrdId, [1, 4] );
  472.             $newMode = list.getNth( $ret, 1 );
  473.             $newNo   = data.toNumber( list.getNth( $ret, 2 ));
  474.             if(( $newMode != -1 )||( $newNo == -1 )) {
  475.                 if( $newNo == -1 ) {
  476.                     $newMode = 1;
  477.                 }
  478.  
  479.                 //---   使用されていないIDを捜し出す   ---//
  480.                 $i = 1;
  481.                 loop {
  482.                     $ret = trd.checkList( $TrdId, [1,2,$i,-2,0] );
  483.                     if( list.get1st( $ret ) == 0 ) {
  484.                         $newNo = $i;
  485.                         exit;
  486.                     }
  487.                     $i = $i + 1;
  488.                 }
  489.             }
  490.  
  491.             //---   新規にグループを作成する   ---//
  492.             $tag = [1, 2, $newNo];
  493.             list.delNth( $ForumDataList1, 3 );
  494.             list.putNth( $ForumDataList1, 2, $tag );
  495.  
  496.             $tagSub = data.copy( $tag );
  497.             list.putLast( $tagSub, -2 );
  498.             $str = str.join( [list.getNth( $ForumDataList1Sub, 2 ),
  499.                               "\t",
  500.                               list.getNth( $ForumDataList1Sub, 1 ),
  501.                               "\t",
  502.                               data.toString(list.getNth($ForumDataList2, 4))],
  503.                              "" );
  504.             trd.setData( $TrdId, $tagSub, $str );
  505.  
  506.             $tagSub = data.copy( $tag );
  507.             list.putLast( $tagSub, 1 );
  508.             trd.setData( $TrdId, $tagSub, "ANN\tお知らせ" );
  509.  
  510.             $tagSub = data.copy( $tag );
  511.             list.putLast( $tagSub, 2 );
  512.             trd.setData( $TrdId, $tagSub, "BUL\t掲示板" );
  513.  
  514.             $tagSub = data.copy( $tag );
  515.             list.putLast( $tagSub,  3 );
  516.             list.putLast( $tagSub, -2 );
  517.             trd.setData( $TrdId, $tagSub, "MES\t電子会議室" );
  518.  
  519.             $tagSub = data.copy( $tag );
  520.             list.putLast( $tagSub,  4 );
  521.             list.putLast( $tagSub, -2 );
  522.             trd.setData( $TrdId, $tagSub, "LIB\tデータライブラリ" );
  523.  
  524.             //---   次回作成グループ番号の記録   ---//
  525.             if( $newMode != 1 ) {
  526.                 if( $newNo == 65535 ) {
  527.                     $newNo = -2;
  528.                 }
  529.                 trd.setData( $TrdId, [1, 4], data.toString( $newNo + 1 ));
  530.             }
  531.  
  532.             AUTO.setTrdUpdateFlg();
  533.         } else {
  534.             $tag = data.copy( list.getNth( $ForumDataList1, 3 ));
  535.             $tagSub = data.copy( $tag );
  536.             list.putLast( $tagSub, -2 );
  537.             list.putLast( $tagSub,  0 );
  538.             $str = str.join( [list.getNth( $ForumDataList1Sub, 2 ),
  539.                               "\t",
  540.                               list.getNth( $ForumDataList1Sub, 1 ),
  541.                               "\t",
  542.                               data.toString(list.getNth( $ForumDataList2,4 ))],
  543.                              "" );
  544.             trd.setData( $TrdId, $tagSub, $str );
  545.             AUTO.setTrdUpdateFlg();
  546.         }
  547.     }
  548.  
  549.     //---   内部保存デ-タの更新   ---//
  550.     $forumList = list.getNth( $SetDataList, 2 );
  551.     if( list.getNth( $ForumDataList1, 4 ) == #FALSE ) {
  552.         $list = [list.getNth( $ForumDataList1, 3 ),$ForumDataList2];
  553.         list.putLast( $forumList, $list );
  554.     } else {
  555.         $forumList = list.getNth( $forumList,list.getNth($ForumDataList1,6));
  556.         list.delNth( $forumList, 2 );
  557.         list.putNth( $forumList, 1, $ForumDataList2 );
  558.     }
  559.  
  560.     $i = 1;
  561.     foreach( $a, $dataList ) {
  562.         table( $i ) {
  563.             1 { $data = #TRUE;                                                }
  564.             2 { $data = list.get1st( list.get1st(
  565.                                         list.get1st( $ForumDataList2 )));    }
  566.             3 { $data = list.get1st( $ForumDataList1Sub );                    }
  567.             4 { $data = list.getNth( $ForumDataList1Sub, 2 );                }
  568.             5 { $data = data.copy( list.getNth( $ForumDataList1, 3 ));        }
  569.             6 { $data = list.getNth( $ForumDataList2, 4 );        }
  570.         }
  571.         if( $no == -1 ) {
  572.             list.putLast( $a, $data );
  573.         } else {
  574.             list.delNth( $a, $no );
  575.             list.putNth( $a, $no - 1, $data );
  576.         }
  577.         $i = $i + 1;
  578.     }
  579.     return;
  580. }
  581.  
  582. //----------------------------------//
  583. //---   フォーラムデータの削除   ---//
  584. //----------------------------------//
  585. function    AUTO.delForumData(
  586.     $tag,                                        // 削除対象のフォーラムのタグ
  587.     $delFlg )                                    // データベース項目削除フラグ
  588.                                                 //   #TRUE  : 削除する
  589. {                                                //   #FALSE : 削除しない
  590.     $forumId = list.getNth( $tag, 3 );
  591.     $i = 1;
  592.     foreach( $a, list.getNth( $SetDataList, 2 )) {
  593.         if( $forumId == list.getNth( list.get1st( $a ), 3 )) {
  594.             list.delNth( list.getNth( $SetDataList, 2 ), $i );
  595.             exit;
  596.         }
  597.         $i = $i + 1;
  598.     }
  599.  
  600.     if( $delFlg == #TRUE ) {
  601.         trd.delData( $TrdId, list.putLast( data.copy( $tag ), -2 ));
  602.         $TrdUpdateFlg = #TRUE;
  603.     }
  604.     return;
  605. }
  606.  
  607. //--------------------------------------------//
  608. //---   フォーラム情報の取得&設定その1   ---//
  609. //--------------------------------------------//
  610. function    AUTO.getForumData1() {
  611.     return( data.copy( $ForumDataList1 ));
  612. }
  613. function    AUTO.setForumData1( $list ) {
  614.     $ForumDataList1Sub = data.copy( $list );
  615.     return;
  616. }
  617.  
  618. //--------------------------------------------//
  619. //---   フォーラム情報の取得&設定その2   ---//
  620. //--------------------------------------------//
  621. function    AUTO.getForumData2() {
  622.     return( data.copy( list.get1st( $ForumDataList2 )));
  623. }
  624. function    AUTO.setForumData2( $list ) {
  625.     list.del1st( $ForumDataList2 );
  626.     list.put1st( $ForumDataList2, data.copy( $list ));
  627.     return;
  628. }
  629.  
  630. //--------------------------------------//
  631. //---   巡回会議室情報の獲得&設定   ---//
  632. //--------------------------------------//
  633. function    AUTO.getKaigiData() {
  634.     return( data.copy( list.getNth( $ForumDataList2, 2 )));
  635. }
  636. function    AUTO.setKaigiData( $list ) {
  637.     list.delNth( $ForumDataList2, 2 );
  638.     list.putNth( $ForumDataList2, 1, data.copy( $list ));
  639.     return;
  640. }
  641.  
  642. //------------------------------------------------//
  643. //---   巡回データライブラリ情報の獲得&設定   ---//
  644. //------------------------------------------------//
  645. function    AUTO.getLibData() {
  646.     return( data.copy( list.getNth( $ForumDataList2, 3 )));
  647. }
  648. function    AUTO.setLibData( $list ) {
  649.     list.delNth( $ForumDataList2, 3 );
  650.     list.putNth( $ForumDataList2, 2, data.copy( $list ));
  651.     return;
  652. }
  653.  
  654. //--------------------------------//
  655. //---   HP一覧リストの取得   ---//
  656. //--------------------------------//
  657. function    AUTO.getHPlist() {
  658.     $nameList   = [];
  659.     $statusList = [];
  660.     $idList     = [];
  661.     $pwList     = [];
  662.     $chkList    = [];
  663.     $tagList    = [];
  664.  
  665.     $tag = [1,3,-6];
  666.     loop {
  667.         $retList = trd.getData( $TrdId, $tag );
  668.         if( list.get1st( $retList ) != -1 ) {
  669.             exit;
  670.         }
  671.         $list = str.split( list.getNth( $retList, 2 ), "\t" );
  672.         list.putLast( $nameList, list.get1st( $list ));
  673.         if( list.size( $list ) == 2 ) {
  674.             list.putLast( $chkList, list.getNth( $list, 2 ));
  675.             list.putLast( $idList, "" );
  676.             list.putLast( $pwList, "" );
  677.         } else {
  678.             list.putLast( $idList,  list.getNth( $list, 2 ));
  679.             list.putLast( $pwList,  list.getNth( $list, 3 ));
  680.             list.putLast( $chkList, list.getNth( $list, 4 ));
  681.         }
  682.         list.putLast( $tagList, [1,3,list.getNth( list.getLast($retList),3 )]);
  683.         list.putLast( $statusList, #FALSE );
  684.  
  685.         $tag = [];
  686.     }
  687.     return([$nameList, $statusList, $idList, $pwList, $chkList, $tagList]);
  688. }
  689.  
  690.  
  691.  
  692. //------------------------------------//
  693. //---   巡回HP情報の獲得&設定   ---//
  694. //------------------------------------//
  695. function    AUTO.getHpData() {
  696.     $hpList     = AUTO.getHPlist();
  697.     $nameList   = list.getNth( $hpList, 1 );
  698.     $statusList = list.getNth( $hpList, 2 );
  699.     $idList     = list.getNth( $hpList, 3 );
  700.     $pwList     = list.getNth( $hpList, 4 );
  701.     $chkList    = list.getNth( $hpList, 5 );
  702.     $tagList    = list.getNth( $hpList, 6 );
  703.     $hpList     = list.getNth( $SetDataList, 3 );
  704.  
  705.     //---   データベースとの連携を取る   ---//
  706.     foreach( $list, $hpList ) {
  707.         $tagNo = list.getNth( list.get1st( $list ), 3 );
  708.         $i = 1;
  709.         foreach( $wkList, $tagList ) {
  710.             if( list.getNth( $wkList, 3 ) == $tagNo ) {
  711.                 exit;
  712.             }
  713.             $i = $i + 1;
  714.         }
  715.         if( $i > list.size( $nameList )) {
  716.             continue;
  717.         }
  718.         $check = list.getNth( $chkList, $i );
  719.         if( $check != list.getNth( $list, 2 )) {
  720.             continue;
  721.         }
  722.         list.delNth( $statusList, $i );
  723.         list.putNth( $statusList, $i - 1, #TRUE );
  724.     }
  725.     return( [$nameList, $statusList, $idList, $pwList, $chkList, $tagList] );
  726. }
  727. function    AUTO.setHpData( $list ) {
  728.     $nameList   = list.getNth( $list, 1 );
  729.     $statusList = list.getNth( $list, 2 );
  730.     $idList     = list.getNth( $list, 3 );
  731.     $pwList     = list.getNth( $list, 4 );
  732.     $chkList    = list.getNth( $list, 5 );
  733.     $tagList    = list.getNth( $list, 6 );
  734.  
  735.     //---   巡回するものだけ取り出してリストに設定する   ---//
  736.     $i = 1;
  737.     $hpList = [];
  738.     foreach( $status, $statusList ) {
  739.         if( $status == #TRUE ) {
  740.             $tag = data.copy( list.getNth( $tagList, $i ));
  741.             $wkList = [$tag, list.getNth( $chkList, $i )];
  742.             list.putLast( $hpList, $wkList );
  743.         }
  744.         $i = $i + 1;
  745.     }
  746.     list.delNth( $SetDataList, 3 );
  747.     list.putNth( $SetDataList, 2, $hpList );
  748.     return;
  749. }
  750.  
  751. //--------------------------------------//
  752. //---   指定ダウンロード情報の獲得   ---//
  753. //--------------------------------------//
  754. function    AUTO.getDownData() {
  755.     $list    = list.getNth( $SetDataList, 4 );
  756.     $retList = [];
  757.     foreach( $a, $list ) {
  758.         $wkList  = str.split( list.getNth(      $a, 2 ), "\t" );
  759.         $wkList2 = str.split( list.getNth( $wkList, 1 ), ","  );
  760.         if( list.get1st( $wkList2 ) == "1" ) {    // 既にダウンロード済
  761.             continue;
  762.         }
  763.  
  764.         //---   データを加工する   ---//
  765.         $listSub = [0,list.get1st( $a )];
  766.         list.putLast( $listSub, data.toNumber( list.getNth( $wkList2, 2 )));
  767.         foreach( $b, str.split( list.getNth( $wkList, 2 ), "," )) {
  768.             list.putLast( $listSub, data.toNumber( $b ));
  769.         }
  770.         list.putLast( $listSub, data.toNumber( list.getNth( $wkList, 3 )));
  771.         list.putLast( $listSub, list.getNth( $a, 3 ));
  772.  
  773.         list.putLast( $retList, $listSub );
  774.     }
  775.     return( $retList );
  776. }
  777.  
  778. //------------------------------------------------------//
  779. //---   指定番目の内容が指定の値のリストを取り出す   ---//
  780. //------------------------------------------------------//
  781. function    AUTO.selectList( $list, $no, $num ) {
  782.     $ret = [];
  783.     foreach( $a, $list ) {
  784.         if( list.getNth( $a, $no ) == $num ) {
  785.             list.putLast( $ret, $a );
  786.         }
  787.     }
  788.     return( $ret );
  789. }
  790.  
  791. //--------------------------------------//
  792. //---   ダウンロードブロックの更新   ---//
  793. //--------------------------------------//
  794. function    AUTO.updateDownData( $list ) {
  795.     $id = file.open( list.getNth( AUTO.getSetName(), 2 ), "", 1 );
  796.     foreach( $a, $list ) {
  797.         if( list.get1st( $a ) == 0 ) {
  798.             continue;
  799.         }
  800.         file.seek( $id, list.getNth( $a, 2 ), 0 );
  801.         file.putByte( $id, code("1"));
  802.     }
  803.     file.close( $id );
  804.     return;
  805. }
  806.  
  807. //-----------------------------------------------------//
  808. //---   コマンド待ちの状態まで待つ(more 処理有り)   ---//
  809. //-----------------------------------------------------//
  810. function    AUTO.waitPrompt( $mode ) {
  811.     if( $mode == #FALSE ) {
  812.         comtable( $a, 600 ) {
  813.             "\w\w"        { exit; }
  814.             interval    { AUTO.haltCheck(); }
  815.         }
  816.         return( 0 );
  817.     }
  818.     $flg = sys.intRec?();
  819.     sys.stopIntRec();
  820.     $more = 0;
  821.     $st   = -1;
  822.     $er   = #FALSE;
  823.     comtable( $a, 600 ) {
  824.         interval        { AUTO.haltCheck();                    }
  825.         timeout            { $st = -1; exit;                    }
  826.         "続き ("        { $more = 1;                        }
  827.         ")\n"            { if( $more == 1 ) { $more = 2; }    }
  828.         "\n"            { $more = 0;                        }
  829.         "more>\w\w"        { AUTO.putStr("\r");                }
  830.         ">\w\w"            { $st =  0; exit;                    }
  831.         ":\w\w"        { $st =  1; exit;                    }
  832.         ":\w\w"            { $st =  2; exit;                    }
  833.         "◆\n"            { $er = #TRUE;                        }
  834.         $AUTO.WAIT30    { AUTO.putStr("\r");                }
  835.         ">\w\w"    {
  836.             if( $more == 2 ) {
  837.                 AUTO.putStr("\r");
  838.                 $more = 0;
  839.             } else {
  840.                 $st = 0;
  841.                 exit;
  842.             }
  843.         }
  844.     }
  845.     if( $flg == #TRUE ) {
  846.         sys.startIntRec();
  847.     }
  848.     if( $er == #TRUE ) {
  849.         return( #FALSE );
  850.     }
  851.     return( $st );
  852. }
  853.  
  854. //-----------------------------------------------------//
  855. //---   コマンド待ちの状態まで待つ(more 処理無し)   ---//
  856. //-----------------------------------------------------//
  857. function    AUTO.waitPrompt2( $mode ) {
  858.     if( $mode == #FALSE ) {
  859.         comtable( $a, 600 ) {
  860.             "\w\w"        { exit; }
  861.             interval    { AUTO.haltCheck();    }
  862.         }
  863.         return( 0 );
  864.     }
  865.     $flg = sys.intRec?();
  866.     sys.stopIntRec();
  867.     $st   = -1;
  868.     $er   = #FALSE;
  869.     comtable( $a, 600 ) {
  870.         timeout            { $st = -1; exit;    }
  871.         ">\w\w"            { $st =  0; exit;    }
  872.         ">\w\w"        { $st =  0; exit;    }
  873.         ":\w\w"        { $st =  1; exit;    }
  874.         ":\w\w"            { $st =  2; exit;    }
  875.         "◆\n"            { $er = #TRUE;        }
  876.         $AUTO.WAIT30    { AUTO.putStr("\r");}
  877.         interval        { AUTO.haltCheck();    }
  878.     }
  879.     if( $flg == #TRUE ) {
  880.         sys.startIntRec();
  881.     }
  882.     if( $er == #TRUE ) {
  883.         return( #FALSE );
  884.     }
  885.     return( $st );
  886. }
  887.  
  888. //----------------------------------------------------------------------//
  889. //---   センターにコマンドを送信し、コマンド受信待ちになるまで待つ   ---//
  890. //----------------------------------------------------------------------//
  891. function    AUTO.sendCommand( $cmd ) {
  892.     $intFlg = sys.intRec?();
  893.     sys.stopIntRec();
  894.     $str = str.join( [$cmd, "\n"], "" );
  895.     $flg = 3;
  896.  
  897. SENDLOOP:
  898.     //---   コマンドを送信し、そのエコーバックを待つ   ---//
  899.     loop {
  900.         AUTO.putStr( str.join( [$cmd, "\r"], "" ));
  901.         comtable( $a, 300 ) {
  902.             $str    { $flg = 0; $ret = #TRUE; exit; }
  903.             interval{ AUTO.haltCheck();    }
  904.             timeout    {
  905.                 AUTO.putStr("\r");
  906.                 AUTO.waitPrompt( #TRUE );
  907.                 $flg = $flg - 1;
  908.                 $ret = #FALSE;
  909.                 exit;
  910.             }
  911.         }
  912.         if( $flg == 0 ) {
  913.             exit;
  914.         }
  915.     }
  916.  
  917.     //---   プロンプトを待って復帰   ---//
  918.     if( $ret == #TRUE ) {
  919.         $ret = AUTO.waitPrompt( #TRUE );
  920.         if( $ret == #FALSE ) {
  921.             //---   エラーだった場合、もう一回送信する   ---//
  922.             goto SENDLOOP;
  923.         }
  924.         if( $intFlg == #TRUE ) {
  925.             sys.startIntRec();
  926.         }
  927.     }
  928.     return( $ret );
  929. }
  930.  
  931. //--------------------------------------------//
  932. //---   ログファイルIDの設定&取り出し   ---//
  933. //--------------------------------------------//
  934. function    AUTO.setLogFileId( $LogFileId ) {
  935.     return;
  936. }
  937. function    AUTO.getLogFileId() {
  938.     return( $LogFileId );
  939. }
  940.  
  941. //------------------------------------------//
  942. //---   ログファイル名の設定&取り出し   ---//
  943. //------------------------------------------//
  944. function    AUTO.setLogFileName( $LogFileName ) {
  945.     return;
  946. }
  947. function    AUTO.getLogFileName() {
  948.     return( $LogFileName );
  949. }
  950.  
  951. //----------------------------------------------------//
  952. //---   インデックスファイルIDの設定&取り出し   ---//
  953. //----------------------------------------------------//
  954. function    AUTO.setIdxFileId( $IdxFileId ) {
  955.     return;
  956. }
  957. function    AUTO.getIdxFileId() {
  958.     return( $IdxFileId );
  959. }
  960.  
  961. //--------------------------------------------//
  962. //---   インデックス総数の設定&取り出し   ---//
  963. //--------------------------------------------//
  964. function    AUTO.setIdxNum( $IdxNum ) {
  965.     return;
  966. }
  967. function    AUTO.getIdxNum() {
  968.     return( $IdxNum );
  969. }
  970.  
  971. //--------------------------------------------------------------//
  972. //---   インデックスファイルから送信文書のマーカを取り出す   ---//
  973. //--------------------------------------------------------------//
  974. function    AUTO.getUpListAll() {
  975.     $IdxUpList = lsi.getUploadTag( $IdxFileId );
  976.     return;
  977. }
  978.  
  979. //----------------------------------------------------------------//
  980. //---   インデックス内の指定番号の送信文書のマーカを取り出す   ---//
  981. //----------------------------------------------------------------//
  982. function    AUTO.getUpList( $no ) {
  983.     $ret = [];
  984.     foreach( $a, $IdxUpList ) {
  985.         if( list.get1st( list.get1st( $a )) == $no ) {
  986.             list.putLast( $ret, $a );
  987.         }
  988.     }
  989.     return( $ret );
  990. }
  991.  
  992. //--------------------------------------------------//
  993. //---   送信文書リストの指定のリストの取り出し   ---//
  994. //--------------------------------------------------//
  995. function    AUTO.selectUpList(
  996.     $list,                                        // 送信文書リスト
  997.     $no,                                        // マーカ要素番号
  998.     $num )                                        // 検索値
  999. {
  1000.     $retList = [];
  1001.     foreach( $a, $list ) {
  1002.         if( list.getNth( list.getNth( list.get1st( $a ), 2 ), $no ) == $num ) {
  1003.             list.putLast( $retList, $a );
  1004.         }
  1005.     }
  1006.     return( $retList );
  1007. }
  1008.  
  1009. //--------------------------------------------------------//
  1010. //---   指定のインデックスの送信済フラグをセットする   ---//
  1011. //--------------------------------------------------------//
  1012. function    AUTO.setSendFlg(
  1013.     $idxList )                                    // インデックスリスト
  1014. {
  1015.     //---   変更対象のインデックスを読み込む   ---//
  1016.     lsi.seekIndex( $IdxFileId, list.getNth( $idxList, 2 ));
  1017.     lsi.getIndex( $IdxFileId );
  1018.  
  1019.     //---   変更対象のタグをカレントにする   ---//
  1020.     $tagNo = list.getNth( $idxList, 3 );
  1021.     $i = 1;
  1022.     $j = list.getNth( $idxList, 4 );
  1023.     loop {
  1024.         $tagList = list.getNth( lsi.getTag( $IdxFileId, $tagNo ), 2 );
  1025.         $tagNo   = -2;
  1026.         if( $i == $j ) {
  1027.             exit;
  1028.         }
  1029.         $i =$i + 1;
  1030.     }
  1031.  
  1032.     //---   タグの制御情報を更新する   ---//
  1033.     if( list.getNth( $idxList, 3 ) == 0x203 ) {
  1034.         $ctrl = list.getNth( $tagList, 2 );
  1035.         $ctrl = $ctrl | 0x0200;
  1036.         list.delNth( $tagList, 2 );
  1037.         list.putNth( $tagList, 1, $ctrl );
  1038.     } else {
  1039.         $ctrl = list.getNth( $tagList, 1 );
  1040.         $ctrl = $ctrl | 0x0200;
  1041.         list.delNth( $tagList, 1 );
  1042.         list.putNth( $tagList, 0, $ctrl );
  1043.     }
  1044.     lsi.updateTag( $IdxFileId, -1, $tagList );
  1045.  
  1046.     //---   インデックスを更新する   ---//
  1047.     lsi.updateIndex( $IdxFileId, list.getNth( $idxList, 2 ));
  1048.  
  1049.     return;
  1050. }
  1051.  
  1052. //------------------------------//
  1053. //---   インデックスの追加   ---//
  1054. //------------------------------//
  1055. function    AUTO.writeIdx( $tagList )
  1056. {
  1057.     //---   タグの設定   ---//
  1058.     lsi.clearTag( $IdxFileId );
  1059.     foreach( $list, $tagList ) {
  1060.         lsi.createTag( $IdxFileId,list.get1st( $list ),list.getNth( $list,2 ));
  1061.     }
  1062.  
  1063.     //---   インデックス追加   ---//
  1064.     lsi.appendIndex( $IdxFileId );
  1065.     $IdxNum = $IdxNum + 1;
  1066.  
  1067.     return;
  1068. }
  1069.  
  1070. //----------------------------//
  1071. //---   エラー情報の記録   ---//
  1072. //----------------------------//
  1073. function    AUTO.error( $title, $list ) {
  1074.     //---   エラー記録ファイルのオープン   ---//
  1075.     $fName = list.getNth( AUTO.getSetName(), 2 );
  1076.     $fName = str.join( list.delLast( str.split( $fName, "." )), "." );
  1077.     $fName = str.join( [$fName, ".ERR"], "" );
  1078.     $id    = file.open( $fName, "", 1 );
  1079.     file.seek( $id, 0, 2 );
  1080.  
  1081.     //---   見出し部分の出力   ---//
  1082.     $date = time.getDate();
  1083.     $str = data.toString( list.get1st( $date ));
  1084.     $str = str.join([$str,data.toString2(list.getNth($date,2),2,"0",0)], "/" );
  1085.     $str = str.join([$str,data.toString2(list.getNth($date,3),2,"0",0)], "/" );
  1086.     $str = str.join([$str,data.toString2(list.getNth($date,4),2,"0",0)], " " );
  1087.     $str = str.join([$str,data.toString2(list.getNth($date,5),2,"0",0)], ":" );
  1088.     $str = str.join([$str,data.toString2(list.getNth($date,6),2,"0",0)], ":" );
  1089.     file.putString( $id, $str   );
  1090.     file.putString( $id, "    " );
  1091.     file.putString( $id, $title );
  1092.     file.putString( $id, "\n"   );
  1093. //test.print( $str   );
  1094. //test.print( "    " );
  1095. //test.print( $title );
  1096. //test.print( "\n"   );
  1097.  
  1098.     //---   メッセージを一行毎出力   ---//
  1099.     foreach( $a, $list ) {
  1100.         file.putString( $id, "  " );
  1101.         file.putString( $id, $a   );
  1102.         file.putString( $id, "\n" );
  1103. //test.print( "  " );
  1104. //test.print( $a   );
  1105. //test.print( "\n" );
  1106.     }
  1107.     file.putString( $id, "\n" );
  1108.     file.close( $id );
  1109.  
  1110.     AUTO.setErrorFlg( #TRUE );
  1111.     return;
  1112. }
  1113.  
  1114. //--------------------------------------//
  1115. //---   通信中の致命的エラーの処理   ---//
  1116. //--------------------------------------//
  1117. function    AUTO.fatalError() {
  1118.     $list = $$ERROR;
  1119.     $errMsg = [];
  1120.     list.putLast( $errMsg, list.getNth( $list, 3 ));
  1121.     foreach( $a, list.getNth( $list, 4 )) {
  1122.         list.putLast( $errMsg, $a );
  1123.     }
  1124.     $listSub = list.getNth( $list, 5 );
  1125.     if( list.size( $listSub ) != 0 ) {
  1126.         if( list.getNth( $listSub, 1 ) != "" ) {
  1127.             list.putLast( $errMsg, str.join(["スクリプト名        :",
  1128.                                             list.getNth( $listSub, 1 )], "" ));
  1129.         }
  1130.         list.putLast( $errMsg, str.join(["スクリプトファイル名:",
  1131.                                             list.getNth( $listSub, 2 )], "" ));
  1132.         list.putLast( $errMsg, str.join(["行                  :",
  1133.                             data.toString( list.getNth( $listSub, 6 ))], ""));
  1134.     }
  1135.     AUTO.error("致命的エラー", $errMsg );
  1136.     return;
  1137. }
  1138.  
  1139. //----------------------------------//
  1140. //---   エラーイベントハンドラ   ---//
  1141. //----------------------------------//
  1142. event    @ERROR {
  1143.     if( $ComFlg == #TRUE ) {
  1144.         AUTO.fatalError();
  1145.         event.mainLoop();
  1146.     }
  1147.     local.errorFunc();
  1148.     event.mainLoop();
  1149. }
  1150.  
  1151. //------------------------//
  1152. //---   ファイル送信   ---//
  1153. //------------------------//
  1154. function    AUTO.sendFile( $list, $mode ) {
  1155.     $path = str.join([$$DIR.STANDARD, "AUTO\\SCRIPT\\SENDFTSR.MX"], "" );
  1156.     $mxList = script.status( #EXTERN, 1 );
  1157.     $flg = #FALSE;
  1158.     foreach( $a, $mxList ) {
  1159.         if( $a == $path ) {
  1160.             $flg = #TRUE;
  1161.             exit;
  1162.         }
  1163.     }
  1164.     if( $flg == #FALSE ) {
  1165.         script.openExtern( $path, #FALSE, [] );
  1166.     }
  1167.     $ret = AUTO.sendFileTSR( $list, $mode );
  1168.     AUTO.haltCheck();
  1169.     return( $ret );
  1170. }
  1171.  
  1172. //---------------------------------//
  1173. //---   WAIT キャラクタの設定   ---//
  1174. //---------------------------------//
  1175. function    AUTO.setWaitChar() {
  1176.     //---   19200bps 時の 15 秒間分のウェイトキャラクタ(300個)   ---//
  1177.     $waitChar = "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1178.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1179.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1180.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1181.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1182.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1183.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1184.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1185.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w"
  1186.                 "\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w\w";
  1187.  
  1188.     //---   15 秒間のウェイトキャラクタの個数を計算   ---//
  1189.     $num = 1500 / ( 8000 / (( $$COM.BAUD * 10 ) / 120 ));
  1190.  
  1191.     //---   15 秒、及び 30 秒間のウェイトキャラクタ作成   ---//
  1192.     $AUTO.WAIT15 = str.left( $waitChar, $num );
  1193.     $AUTO.WAIT30 = str.join( [$AUTO.WAIT15, $AUTO.WAIT15], "" );
  1194.     $AUTO.WAIT60 = str.join( [$AUTO.WAIT30, $AUTO.WAIT30], "" );
  1195.  
  1196.     return;
  1197. }
  1198.  
  1199. //---------------------------------//
  1200. //---   WAIT キャラクタの取得   ---//
  1201. //---------------------------------//
  1202. function    AUTO.getWaitChar( $num ) {
  1203.     if( $num == 15 ) {
  1204.         return( $AUTO.WAIT15 );
  1205.     } elif( $num == 30 ) {
  1206.         return( $AUTO.WAIT30 );
  1207.     } else {
  1208.         return( $AUTO.WAIT60 );
  1209.     }
  1210. }
  1211.  
  1212. //--------------------------------------//
  1213. //---   デフォルト情報リストの設定   ---//
  1214. //--------------------------------------//
  1215. function    AUTO.setDefaultData(
  1216.     $list )                                        // デフォルト情報リスト
  1217. {
  1218.     $AutoDefaultData = data.copy( $list );
  1219.     return;
  1220. }
  1221. //--------------------------------------//
  1222. //---   デフォルト情報リストの取得   ---//
  1223. //--------------------------------------//
  1224. function    AUTO.getDefaultData()
  1225. {
  1226.     return( $AutoDefaultData );
  1227. }
  1228. //------------------------------------------//
  1229. //---   フォーラム登録可能最大数の取得   ---//
  1230. //------------------------------------------//
  1231. function    AUTO.getForumMax()
  1232. {
  1233.     return( $AutoForumMax );
  1234. }
  1235. !!ENDBLOCK
  1236.